Event Recommendation System

ABSTRACT

An event recommendation system recommends events for a candidate attendee. The system recommends an event based on characteristics of the candidate attendee and characteristics of prior attendees that attended a prior occurrence of the event. A prior attendee may have a positive or negative experience with the prior occurrence of the event. A positive experience may be defined, for example, as enjoying the event, completing the event, or performing well in the event. A negative experience may be defined, for example, as not enjoying the event, not completing the event, or not performing well in the event. An event is recommended to a candidate attendee if the candidate attendee has similar characteristics to a prior attendee that had a positive experience. An event is not recommended to a candidate attendee if the candidate attendee has similar characteristics as a prior attendee that had a negative experience.

INCORPORATION BY REFERENCE; DISCLAIMER

Each of the following applications are hereby incorporated by reference:application Ser. No. 15/933,300 filed on Mar. 22, 2018; application No.62/566,394 filed on Sep. 30, 2017; application No. 62/566,405 filed onSep. 30, 2017. The Applicant hereby rescinds any disclaimer of claimscope in the parent application(s) or the prosecution history thereofand advises the USPTO that the claims in this application may be broaderthan any claim in the parent application(s).

TECHNICAL FIELD

The present disclosure relates to event management and recommendation.In particular, the present disclosure relates to an interface forselecting, ordering, and presenting events for a candidate attendee.

BACKGROUND

A student at a higher education institution must typically interact withmultiple systems, web sites, and paper documents to complete tasks. Thestudent may need to complete tasks such as scheduling classes, askingquestions, and paying bills. The interaction paradigm in the highereducation industry as a whole is a self-service model.

Students are faced with the challenge to choose courses in which toenroll for every academic period. Depending on the context, a studentmay have many, or few, alternative courses from which to choose. Incases in which many alternative courses are available, the best choiceof courses may not be transparent to the student.

A virtual assistant is a software agent used to execute tasks.Generally, a virtual assistant executes a simple task responsive to arequest. For example, responsive to the voice command “What is theweather like today?” a virtual assistant obtains, and displays, today'sweather forecast. A virtual assistant may accept an instruction from auser via voice commands, text commands, and/or user interaction with auser interface.

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are illustrated by way of example and not by way oflimitation in the figures of the accompanying drawings. It should benoted that references to “an” or “one” embodiment in this disclosure arenot necessarily to the same embodiment, and they mean at least one. Inthe drawings:

FIGS. 1A-1E illustrate a system in accordance with one or moreembodiments;

FIGS. 2A-2B illustrate event management interfaces in accordance withone or more embodiments;

FIG. 3 illustrates an example set of operations for generating an eventschedule in accordance with one or more embodiments;

FIG. 4 illustrates an example set of operations for recommending anevent for a candidate attendee in accordance with one or moreembodiments; and

FIG. 5 shows a block diagram that illustrates a computer system inaccordance with one or more embodiments.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding. One or more embodiments may be practiced without thesespecific details. Features described in one embodiment may be combinedwith features described in a different embodiment. In some examples,well-known structures and devices are described with reference to ablock diagram form in order to avoid unnecessarily obscuring the presentinvention.

-   -   1. GENERAL OVERVIEW    -   2. EVENT MANAGEMENT & RECOMMENDATION SYSTEM    -   3. EVENT MANAGEMENT INTERFACE        -   A. COURSE MANAGEMENT INTERFACE        -   B. CLASS MANAGEMENT INTERFACE    -   4. GENERATING AN EVENT SCHEDULE        -   A. COURSE PLANNING        -   B. CLASS SCHEDULING    -   5. SELECTING EVENTS FOR RECOMMENDATION        -   A. RECOMMENDING A COURSE        -   B. RECOMMENDING A CLASS    -   6. MISCELLANEOUS; EXTENSIONS    -   7. HARDWARE OVERVIEW

1. General Overview

One or more embodiments include an event recommendation system. Theevent recommendation system recommends events for a candidate attendee.The event recommendations are based on (a) the characteristics of thecandidate attendee and (b) characteristics of prior attendees thatattended a prior occurrence of the event. A prior attendee may have apositive experience or a negative experience with the prior occurrenceof the event. A positive experience may be defined, for example, asenjoying the event, completing the event, or performing well in thetasks or evaluation metrics associated with the event. A negativeexperience may be defined, for example, as not enjoying the event, notcompleting the event, or not performing well in the tasks or evaluationmetrics associated with the event. An event is recommended to acandidate attendee if the candidate attendee has similar characteristicsto a prior attendee that had a positive experience. An event is notrecommended to a candidate attendee if the candidate attendee hassimilar characteristics as a prior attendee that had a negativeexperience. A machine-learning algorithm may continually update adatabase of attendee characteristics associated with positiveexperiences and attendee characteristics associated with negativeexperiences. The database is used to generate the event recommendations.

An example of an event, that may be recommended, is a course in a highereducation institution. A course is a unit of academic content. English 4and Introduction to Nursing are courses. Courses may be offered on areoccurring basis (for example, every semester over several years).Another example of an event, that may be recommended, is a class in ahigher education institution. A class is a specific instance of acourse. Physics 101, Section A, on Wednesdays in the Spring 2017semester with Professor Smith, is an example of a class.

One or more embodiments select and recommend courses in a highereducation institution. A machine-learning algorithm builds a database ofcharacteristics of students that have done well in a course.Alternatively, or additionally, the machine-learning algorithm builds adatabase of characteristics of students have not done well in thecourse. The system recommends the course to a student if thecharacteristics of the student are similar to the characteristics ofstudents that have done well in the course. The system does notrecommend the course to a student if the characteristics of the studentare similar to the characteristics of students have not done well in thecourse.

As an example, the system may recommend or not recommend a course to acurrent student based on an event score computed for the currentstudent. The event score is computed based on a comparison of thecharacteristics of the current student with characteristics of priorstudents that previously took the course. If the characteristics of acurrent student and the characteristics of a prior student meet asimilarity threshold, then the prior student is determined to be similarto the current student. The system identifies a subset of the priorstudents that are determined to be similar to the current student. Ifthe number or percentage of students, in the subset of prior students,that performed well in the course meets a recommendation threshold, thenthe course is recommended to the current student. If the number orpercentage of students, in the subset of prior students, that performedwell in the course does not meet the recommendation threshold, then thecourse is not recommended to the current student.

One or more embodiments select and recommend classes to a student. Thesystem may identify a set of candidate classes corresponding to arecommended course. The system may select one of the candidate classesbased on a location and time of the class, and the student's expectedlocation at or near that time. As an example, Joe has a first class onthe north side of a large campus from 9 am to 10:30 am on Wednesdays.The system may recommend a second class, from a set of candidateclasses, that is scheduled for the north side of campus at 11 am onWednesdays. The time and location proximity between the classes helpsthe student quickly travel from the first class to the second class.

One or more embodiments described in this Specification and/or recitedin the claims may not be included in this General Overview section.

2. Event Management & Recommendation System

FIG. 1A illustrates an event management and recommendation system 100 inaccordance with one or more embodiments. As illustrated in FIG. 1A, theevent management and recommendation system 100 includes an eventmanagement interface 110, scheduling engine 120, template modelingengine 140, event recommendation engine 180, and database 130. In one ormore embodiments, the event management and recommendation system 100 mayinclude more or fewer components than the components illustrated in FIG.1A. The components illustrated in FIG. 1A may be local to or remote fromeach other. The components illustrated in FIG. 1A may be implemented insoftware and/or hardware. Each component may be distributed overmultiple applications and/or machines. Multiple components may becombined into one application and/or machine. Operations described withrespect to one component may instead be performed by another component.

In an embodiment, an event 124 is a planned occurrence. As an example,an event 124 is a class or course in a higher education institution. Asanother example, an event 124 is a business meeting. As another example,an event 124 is a practice session for a team sport.

In an embodiment, an event schedule 122 is an ordered set of eventscorresponding to an event order 126. The event order 126 may specify thearrangement of a set of events 124 with respect to other events and/orwith respect to a timeline. The event order 126 may organize events intotime slots. As an example, the event order 126 may specify that fourcourses are scheduled in the Spring 2016 semester. As another example,the event order may specify time slots throughout the week in whichreoccurring classes are to be scheduled.

In an embodiment, the scheduling engine 120 includes hardware and/orsoftware configured to manage an event schedule 122. The schedulingengine 120 may determine how to schedule an event with respect to otherevents. The scheduling engine 120 may determine an event order 126 forthe events 124 based on a set of ordering rules 138. As describedfurther below with respect to database 130, the ordering rules 138prescribe an order in which events must be completed. The schedulingengine 120 may modify the event schedule according to user input and theset of ordering rules 138. The scheduling engine 120 may enroll anattendee in events, based on the event schedule.

As illustrated in FIGS. 1B-1C, the scheduling engine 120 may beconfigured to schedule events such as courses and/or classes. FIG. 1Billustrates a course scheduling engine 120 a. Course scheduling engine120 a is configured to generate a course schedule 122 a comprising a setof courses 124 a.

In an embodiment, a course 124 a is a unit of academic content. As anexample, Physics 101 is a course. As another example, Introduction toNursing is a course. A course 124 a may be, as non-limiting examples,formatted as a lecture, seminar, or lab. A course 124 a may be aninternship, to be completed for credit. Courses may be offered on areoccurring basis. As an example, Math 101 is offered twice per semesterover the course of several years. As another example, English 330 isoffered in alternate Spring quarters.

In an embodiment, a course schedule 122 a (also referred to herein as acourse plan) is an ordered set of courses to be completed towards anacademic goal. The academic goal may be the completion of an academicprogram. As examples, the course schedule may correspond to therequirements for completion of an undergraduate degree, graduate degree,or certificate program. A course schedule 122 a may span across multipleacademic terms. As an example, the course schedule 122 a may includecourses to be completed over eight semesters comprised in a four-yearplan.

In an embodiment, course order 126 a is the order in which courses areconfigured. Courses in a course plan may be grouped by academic term.For example, four courses are assigned to the Spring 2020 semester.Courses in a course plan may be ordered without scheduling a specifictime slot. As an example, four courses are listed in Spring 2020, butdays and times corresponding to the courses are not specified.

FIG. 1C illustrates a class scheduling engine 120 b. Class schedulingengine 120 b is configured to generate a class schedule 122 b comprisinga set of classes 124 b.

In an embodiment, a class 124 b is a particular offering of a course. Asan example, Physics 101 is offered as Section A, taught by ProfessorJones on Mondays, Wednesdays, and Fridays in the Spring 2018 Semester.Physics 101 is also offered as Section B, taught by Professor Smith onTuesdays and Thursdays in the Spring 2018 Semester. A class 124 b may beassociated with a specific time slot, as with Physics 101 in theprevious example. Alternatively, a class may not be allocated a specifictime slot. As an example, a final capstone project does not correspondto a particular time slot. As additional examples, a class 124 b may bean externship, thesis project, seminar, or internship. A class 124 b maybe associated with a particular teacher. A class 124 b may be associatedwith a particular location. A class 124 b may be offered in-person oronline.

In an embodiment, a class schedule 122 b is an ordered set of classes ina particular academic term. As an example, a class schedule 122 b mayinclude three classes for the Spring 2019 semester. The class schedule122 b may specify times, locations, and professors associated with eachrespective class.

In an embodiment, class order 126 b is the order in which classes areconfigured. The class order 126 b may include a specific time slot. Asan example, a class schedule 122 b specifies that Nursing 301A isscheduled prior to Nursing 330C on Mondays and Wednesdays. Specifically,Nursing 301A is scheduled Mondays and Wednesdays from 9:00 am-10:15 am.Nursing 330C is scheduled Mondays and Wednesdays from 1:00 pm-3:00 pm.

Returning to FIG. 1A, in one or more embodiments, the event managementinterface 110 refers to hardware and/or software configured tofacilitate communications between a user and the scheduling engine 120and/or the event recommendation engine 180. The event managementinterface 110 may render user interface elements. The event managementinterface 110 may receive user input via user interface elements.Examples of interfaces include a graphical user interface (GUI), acommand line interface (CLI), a haptic interface, and a voice commandinterface. Examples of user interface elements include checkboxes, radiobuttons, dropdown lists, list boxes, buttons, toggles, text fields, dateand time selectors, command lines, sliders, pages, and forms.

In an embodiment, different components of the event management interface110 are specified in different languages. The behavior of user interfaceelements is specified in a dynamic programming language, such asJavaScript. The content of user interface elements is specified in amarkup language, such as hypertext markup language (HTML) or extensiblemarkup language (XML) User Interface Language (XUL). The layout of userinterface elements is specified in a style sheet language, such asCascading Style Sheets (CSS). Alternatively, event management interface110 is specified in one or more other languages, such as Java, C, orC++.

In an embodiment, the event management interface 110 is implemented onone or more digital devices. The term “digital device” generally refersto any hardware device that includes a processor. A digital device mayrefer to a physical device executing an application or a virtualmachine. Examples of digital devices include a computer, a tablet, alaptop, a desktop, a netbook, a mobile handset, a smartphone, a personaldigital assistant (“PDA”), and/or a client device.

In an embodiment, the event management interface 110 includesfunctionality to accept user input to configure an event schedule 122.The event management interface may, for example, accept user inputmoving an event from one time period to another time period.

In an embodiment, the virtual assistant 102 includes hardware and/orsoftware configured to assist the user in configuring an event schedule.The virtual assistant 102 may guide the user through the process ofconfiguring the event schedule. Additionally, the virtual assistant 102may assist the user in other tasks. As an example, the virtual assistantmay assist a student with completing a college application. As otherexamples, the virtual assistant may assist the student with obtainingfinancial aid, paying bills, and obtaining a student identification.

In an embodiment, the virtual assistant 102 communicates with the uservia a modal displayed on the event management interface 110. As anexample, the virtual assistant 102 may display a pop-up windowdisplaying the text, “Hi, would you like to schedule your classes forthe semester?”. The virtual assistant 102 may further be configured toreceive user input. As an example, the virtual assistant displaysbuttons labeled “Yes” and “No.” Responsive to detecting user inputselecting the “Yes” button, the virtual assistant may initiate eventscheduling via the scheduling engine 120.

In an embodiment, the virtual assistant 102 includes functionality toproactively initiate actions. As an example, the virtual assistantdetermines that financial aid paperwork is due in a week. Responsive todetermining that financial aid paperwork is coming due, the virtualassistant 102 displays a message asking the user if the user would liketo complete a financial aid application.

In an embodiment, the filters 112 are user-configurable guidelines forthe scheduling engine 120 to use in selecting and ordering events. As anexample, a filter 112 may cause the scheduling engine to disfavor, orrefrain from, scheduling events before 2 pm. As another example, afilter 112 may cause the scheduling engine to disfavor, or refrain from,scheduling events during the weekend. As another example, a filter 112may cause the scheduling engine to refrain from scheduling classesduring a particular semester when the student will be interning at acompany instead of taking classes. The filters 112 may be displayed viathe event management interface 110. As an example, a set of filters aredisplayed with corresponding slider buttons. The event managementinterface 110 may receive user input, via the slider buttons, to selecta subset of the filters 112.

In an embodiment, the database 130 is any type of storage unit and/ordevice (e.g., a file system, collection of tables, or any other storagemechanism) for storing data. Further, database 130 may include multipledifferent storage units and/or devices. The multiple different storageunits and/or devices may or may not be of the same type or located atthe same physical site. Further, database 130 may be implemented or mayexecute on the same computing system as the event management interface110, scheduling engine 120, event recommendation engine 180, andtemplate modeling engine 140. Alternatively, or additionally, thedatabase 130 may be implemented or executed on a computing systemseparate from the event management interface 110, scheduling engine 120,event recommendation engine 180, and template modeling engine 140. Thedatabase 130 may be communicatively coupled to the event managementinterface 110, scheduling engine 120, event recommendation engine 180,and template modeling engine 140 via a direct connection or via anetwork.

In an embodiment, event availability 132 describes times in which anevent may be scheduled. As an example, the events 124 are collegeclasses. The event availability 132 specifies times that a particularclass is offered in a particular semester (e.g., Sculpting 101 isoffered in Section A, Mondays 8 am-10 am and Section B, Wednesdays 4pm-6 pm). As another example, the events 124 are fitness classes. Theevent availability 132 specifies times that a particular fitness classis offered at a gym (e.g. Spinning is offered Tuesday, Thursday, andSaturday from 7 am-8 am).

In an embodiment, the requirements 134 are events to be completed by theattendee to meet an event completion target. As an example, the eventcompletion target is the completion of the coursework needed to earn alaw degree. The requirements 134 include completing 20 core coursescorresponding to the law degree and 12 units of elective courses.

In an embodiment, the records 136 describe prior occurrences of eventsin association with attendees. The records 136 may include a list ofattendees that attended a particular event. Records 136 may furtherspecify event outcomes. As an example, the event is a course. Therecords 136 include information specifying students who have enrolled inthe course. The records 136 further specify whether each student haspassed or failed the course. As another example, the records may specifyeach student's letter grade in the course. Records 136 may correspond toevents at the institution for which an event or event schedule is beinggenerated. Alternatively, or additionally, records 136 may correspond toevents at other institutions, such as classes completed by a transferstudent.

In an embodiment, the ordering rules 138 prescribe an order in whichevents must be completed. As an example, the course Painting I is aprerequisite for the course Painting II. Accordingly, an ordering rule138 prohibits Painting II from being positioned before or concurrentlywith Painting I in a course schedule. As another example, an orderingrule specifies that the lab section of Chemistry 101 must be scheduledlater in the week than the lecture section of Chemistry 101.

In an embodiment, the event recommendation engine 180 includes hardwareand/or software configured to select an event for recommendation to aparticular attendee. The event recommendation engine 180 may implement amachine-learning algorithm to select events for recommendation based onattendee characteristics 182 and/or records 136. The eventrecommendation engine 180 may base the selection of events forrecommendation on additional factors such as requirements 134 andordering rules 138.

In an embodiment, the attendee characteristics 182 are parametersdescribing an attendee. Attendee characteristics may include academiccharacteristics such as Psychology Major and 3.5 GPA. Attendeecharacteristics 182 may describe time constraints on an attendee. Asexamples, a student has a full course load or is working full-time inaddition to attending school. Attendee characteristics 182 may includebehavioral characteristics. As an example, the system may obtain webbrowsing data specifying that an attendee spends a certain amount oftime per day browsing the internet. Attendee characteristics 182 maycorrespond to candidate attendees, for whom recommendations are beinggenerated. Attendee characteristics 182 may correspond to priorattendees, who may or may not have enrolled in a particular event in thepast.

In an embodiment, the event score 186 is a scoring value attributed to aparticular event for a particular attendee. The event score may bedetermined based on a comparison of attendee characteristics 182 of acandidate attendee for an event and attendee characteristics 182 ofprior attendees that attended a prior instance of the event. The eventscore 186 may be a measure of a candidate attendee's likelihood ofhaving a positive experience with the event.

As illustrated in FIGS. 1D-1E, the event recommendation engine 180 maybe configured to recommend events such as courses and/or classes. FIG.1D illustrates a course recommendation engine 180 a. Courserecommendation engine 180 a is configured to recommend one or morecourses 124 a for a student.

In an embodiment, attendee characteristics 182 a include the featuresdescribed above with respect to attendee characteristics 182 in FIG. 1A.For course recommendation, attendee characteristics 182 a may includecharacteristics that are pertinent to an overall plan of study. Asexamples, attendee characteristics 182 a may include a declared majorand a target number of years for degree completion.

In an embodiment, course score 186 a is similar to event score 186described with respect to FIG. 1A. Course score 186 a is based on acomparison of attendee characteristics 182 a of a candidate attendee fora course and attendee characteristics 182 a of prior attendees that haveenrolled in a prior occurrence of the course.

FIG. 1E illustrates a class recommendation engine 180 b. Classrecommendation engine 180 b is configured to recommend one or moreclasses 124 b for a student.

In an embodiment, attendee characteristics 182 b are similar to theattendee characteristics 182 described above with respect to FIG. 1A.Additionally, attendee characteristics 182 b may include availabilityinformation. As an example, attendee characteristics 182 b may includeattendee availability obtained from a linked work calendar. Attendeecharacteristics 182 b may include professor preferences. As an example,a student may specify that the student does not want to take any classeswith Professor Smith. Attendee characteristics 182 b may includelocational information. As an example, the attendee characteristics 182b specify that a student works in New Jersey on Monday mornings.

In an embodiment, class score 186 b is similar to event score 186,described above with respect to FIG. 1A. Class score 186 b is based on acomparison of attendee characteristics 182 a of a candidate attendee fora class and attendee characteristics 182 a of prior attendees that haveenrolled in the class in prior academic terms. Class score 186 b may befurther based on the target attendee's availability for the academicterm. Class score 186 b may further be based on the target attendee'spreferences with regard to times, professors, and locations.

Returning to FIG. 1A, a template plan 142 is a default event schedule.Embodiments herein include using the template plan as a starting pointfor generating an event schedule customized for a particular attendee.As an example, a university department head may configure a templateplan corresponding to a suggested plan of study for completing degreerequirements. The system may customize the template plan, for anattendee, based on requirements 134 for the attendee's degree, andcredits transferred-in or coursework already completed by the attendee.In the higher-education context, template plans may vary by program. Afirst department may have a 4-year template plan, while a seconddepartment has a 5-year template plan. The system may select theappropriate template plan based on the attendee and/or program.

In an embodiment, the template modeling engine 140 updates the templateplans 142 based on user input. The template modeling engine 140 mayimplement a machine-learning algorithm to modify a template plan 142based on a history of modifications to the template plan. As an example,the system identifies a pattern of multiple attendees rescheduling mathclasses from prior to 9 am to after 9 am. Based on the pattern, thesystem modifies the template plan to exclude math classes prior to 9 am.As another example, the system identifies a pattern of multipleattendees rescheduling chemistry courses from a first semester in acourse plan to later semesters in the course plan. Based on the pattern,the system modifies the template plan to exclude chemistry courses fromthe courses selected for the first semester in a course plan.

In an embodiment, the calendar application 150 is an application whichincludes data describing an attendee's availability. The calendarapplication 150 may be external to the event management andrecommendation system. As an example, the event management system andrecommendation system 100 is associated with a university. The eventmanagement and recommendation system 100 is used to manage an attendee'scontinuing education class schedule. The calendar application 150corresponds to the attendee's employment. The calendar application 150tracks meetings associated with the attendee's employment.Alternatively, or additionally, the calendar application 150 may beintegrated within the event management and recommendation system 100.The calendar application 150 may be an application for tracking thecandidate attendee's extracurricular activities at the university forwhich classes are being scheduled.

The event management and recommendation system 100 may becommunicatively coupled to the calendar application 150. The eventmanagement and recommendation system 100 may obtain data, from thecalendar application 150, for tailoring the event schedule 122 to thecandidate attendee's availability.

3. Event Management Interface

A. Course Management Interface

FIG. 2A illustrates an example of a course management interface 110 a inaccordance with one or more embodiments. A course management interface110 a is a type of event management interface 110. The course managementinterface 110 a illustrates generating, displaying, and modifying acourse plan 122 a. However, the example is equally applicable togenerating, displaying and modifying any type of an event schedule 122.Components and operations described in relation to this example shouldnot be construed as limiting the scope of any of the claims.

The course management interface 110 a is used to configure a course plan122 a for a student. The course plan comprises a set of courses 124 athat satisfy the requirements for earning a nursing degree at VictoryUniversity. A first subset of the courses 124 a corresponds totransferred units 202. Transferred units 202 include units correspondingto courses which the student has already completed at anotherinstitution. A second subset of the courses 124 a correspond to courses204 which are to be completed at Victory University. The courses to becompleted 204 are displayed in association with a corresponding periodof time, a semester. The courses in a course plan 122 a may representplaceholders for classes to be included in a schedule for a particularsemester. As an example, the course plan includes Nursing Elective inthe Spring 2020 semester. Based on the course plan, the system generatesa schedule for the Fall 2020 semester which includes a particularnursing elective, Nursing 414.

The courses 124 a may be reordered based on user input. The system mayreceive user input modifying the courses. User input modifying thecourses may include deleting, reordering, or moving a course to anotherterm. As an example, the course management interface 110 a may permitthe user to drag and drop a course from one semester to another semester(e.g., a course may be dragged from Spring 2019 and dropped to Spring2018).

The system may further present a search interface (not shown). Via thesearch interface, the system may accept user input to search foravailable courses. The system may accept user input to add coursesdirectly to a time period. The system may further accept user inputadding a new time period (e.g., a summer term or an additional semesterto finish program requirements).

The course management interface 110 a displays a sidebar to show generaleducation requirements 206 and major requirements 208. When a course 124a is added to the course plan 122 a, the system may update therequirements panel to reflect requirements satisfied by the course plan.As an example, when a four-unit nursing course, NURS 412 (210) is addedto the course plan, the system updates the major requirements panel 208.The course management interface 110 a updates the major requirementspanel 208 to include a check mark, indicating that the NURS 412requirement is included in the class schedule (166).

The course management interface 110 a displays an anticipated graduationdate 212. The course management interface 110 a may update theanticipated graduation date 212 as the course schedule is reconfigured.

The course management interface 110 a displays units completed 214. Thesystem may determine the units completed 214 based on the records 136.Here, the units completed 214 correspond to 24 transferred units (202).

The course management interface 110 a displays units planned 216. Thesystem may determine the units planned 216 based on the course plan.Here, the units planned 216 correspond to the 96 units planned via thecourses to be completed 204. The system may update the units planned asthe course plan is configured. As an example, if a user were to remove a4-unit course, the course management interface 110 a would update todisplay 92/96 units planned instead of 96/96 units planned.

Alternatively, or additionally, the system may display a metric in theform (units completed)/(units included in plan)/(units remaining). As anexample, a student has completed 2 units, has 2 units planned in acourse plan, and needs 4 units to satisfy a requirement. The systemdisplays the metric 2/2/4 for the student, indicating the student's(units completed)/(units included in plan)/(units remaining).

The course management interface 110 a may further display a wish-listelement (not pictured). The wish-list element may accept user inputadding courses to a wish-list of courses. Based on the wish-list, thesystem may prioritize courses for selection.

B. Class Management Interface

FIG. 2B illustrates an example of a class management interface 110 b inaccordance with one or more embodiments. A class management interface110 b is a type of event management interface 110. The class managementinterface 110 b illustrates generating, displaying, and modifying aclass schedule 122 b. However, the example is equally applicable togenerating, displaying and modifying any type of an event schedule 122.Components and operations described in relation to this example shouldnot be construed as limiting the scope of any of the claims.

The class management interface 110 b is used to configure a classschedule 122 b for a particular candidate attendee, Chris. The classschedule 122 b includes a set of classes 124 b for the Fall 2017semester (226). The class schedule 122 b is a part of Nursing Plan 1.Nursing Plan 1 corresponds to an overall course plan 122 a for Chris, asillustrated in FIG. 2A.

The class schedule 122 b includes four classes 124 b. SCI111—Chemistry(220) is a course to be taken in the Fall 2017 semester. Two classsections (220 a, 220 b) of course 220 are available. The classmanagement interface 110 b displays both sections, along with thecorresponding time 232, location 234, professor 236, and availability238. SCI111 Section A (220 a) is offered Mondays and Wednesdays from 2pm-4 pm (232). SCI111 Section A (220 a) is taught by instructor JaneOritz (236). SCI 111 Section A (220 a) is to be held in Angela Hall 322(234). 12 of 32 seats are available (238) for SCI 111 Section A. SCI111Section B (220 b) is offered Tuesdays and Thursdays from 7 am-8:30 am(232). SCI111 Section B (220 b) is taught by instructor Jane Oritz(236). SCI111 Section B (220 b) is to be held in Angela Hall 322 (234).12 of 32 seats are available (238) for SCI111 Section B (220 b).

The class management interface 110 b further displays course 222—GFA225Art of the Giant Monster. Two sections of course 222 are available. Eachsection (222 a, 222 b) is displayed along with the corresponding time232, location 234, professor 236, and availability 238.

The class management interface 110 b further displays course 224-NURS301Nursing Care of Adult I. Course 224 includes a clinical section (224 a)and a theory section (224 b). Each section (224 a, 224 b) is displayedalong with the corresponding time 232, location 234, professor 236, andavailability 238.

The class management interface 110 b displays the classes 124 b both ina calendar and in a sidebar. Via the sidebar, the class managementinterface 110 b may accept user input selecting a class section. As anexample, SCI111 Section B has been selected, as indicated by thecheckmark in the sidebar. Responsive to receiving user input selecting asection in the sidebar, the class management interface 110 b may updatethe calendar. Alternatively, or additionally, the class managementinterface 110 b may accept user input modifying the schedule throughinteraction with the calendar. As an example, the class managementinterface 110 b may accept user input dragging-and-dropping SCI111 fromMonday to Tuesday. Responsive to the user input, the class managementinterface 110 b may switch the scheduled class from SCI111 Section A, onMondays and Wednesdays, to SCI111 Section B, on Tuesdays and Thursdays.

The class management interface 110 b includes functionality to acceptuser input to filter class selections. The class management interface110 b displays a button 228 labeled “Filter Class Selections.”Responsive to detecting user interaction with the “filter classselections” button, the system may display a modal with a set offilters. The modal may include sliders marked “Morning (before 9 am);Evening (after 5 pm); Late Evening (after 9 pm); and Weekends. Theinterface may accept user input to select or deselect a time preferenceby adjusting the sliders. Classes corresponding to selected timepreferences may be recommended or scheduled by the system. Classescorresponding to deselected time preferences may not be recommended orscheduled by the system. The modal may further include sliders or otherUI elements to allow a user to select formats (e.g. onsite or online).The modal may further include sliders or other UI elements to allow auser to select locations (e.g. San Jose or San Ramon campus).

The class management interface 110 b includes functionality to acceptuser input to manually block times. The class management interface 110 bdisplays a button 228 labeled “block times.” Responsive to userinteraction with the “block times” button, the class managementinterface 110 b may permit a user to highlight portions of the calendar.Highlighted portions of the calendar may be blocked. For blocked times,the system may refrain from recommending or scheduling a class.

The class management interface 110 b includes functionality for the userto import availability from a calendar, such as a work calendar orsocial calendar. The class management interface 110 b displays a button242 labeled “import calendar.” Responsive to user interaction with the“import calendar” button, the class management interface 110 b imports acalendar. The system may use information imported from the calendar toblock times when the candidate attendee is unavailable. The system mayfurther identify locations based on information imported from thecalendar. Using the location of a calendared event, the system maydetermine a commute time between the location of the event and thelocation of a class. The system may block times when the candidateattendee is not available by greying out portions of the calendar withtime constraints 230. The time constraints 230 show that Chris is notavailable for courses between 9 am and 4 pm on Mondays, Tuesdays,Wednesdays, and Thursdays. The time constraints 230 further show thatChris is not available for courses between 10 am and 2 pm on Fridays.

Based on factors such as candidate attendee availability, the classmanagement interface 110 b may display an alert. In the schedule shown,there is a potential timing conflict between GFA225 Section A (222 b)and an event in Chris's calendar. The class management interface 110 bdisplays an alert 240, indicated by an explanation mark, on class 222 bon the calendar. Responsive to user interaction with the alert, theclass management interface 110 b may display a modal explaining thealert. If a user selects the alert, the class management interface 110 bmay display a modal reading, “(!) Potential Timing Conflict: Yourcommute is 20 minutes from work and this section starts immediatelyafter. The only other option is a section with a waitlist with the sameconflict. How should we proceed?” The modal may include buttons labeled“Switch it,” “Keep it,” and “Choose a new course.” Responsive to userinteraction with a button, the class management interface may modify theschedule and/or remove the alert.

4. Generating an Event Schedule

FIG. 3 illustrates an example set of operations for generating an eventschedule in accordance with one or more embodiments. One or moreoperations illustrated in FIG. 3 may be modified, rearranged, or omittedaltogether. Accordingly, the particular sequence of operationsillustrated in FIG. 3 should not be construed as limiting the scope ofone or more embodiments.

In an embodiment, the scheduling engine determines, for an attendee,events in an initial order (Operation 302). The scheduling engine maydetermine the initial order of events for the attendee based oncompleted events corresponding to the attendee. The scheduling enginemay further determine the initial order of events based onto-be-completed events. As an example, the scheduling engine identifiesevents in an initial order for a student. The events satisfy therequirements for a Bachelor of Arts degree in English. The schedulingengine determines that the student has completed a portion of thecourses required for the degree. The scheduling engine selects courses,from a set of required courses in the English program, which the studenthas not completed. The scheduling engine identifies a set of coursesto-be-completed to satisfy the requirements for the degree.Additionally, the scheduling engine may identify events based on eventrecommendations generated by the event recommendation engine, asdescribed below in Section 5.

Additionally, or alternatively, the scheduling engine may determine theevents in the initial order based on ordering rules. As an example, thescheduling engine generates a course plan comprising a set of courses.The scheduling engine orders the set of courses such that prerequisiterequirements are met for each of the courses.

In an embodiment, the scheduling engine determines the initial eventorder based on attendee availability. The attendee availability may beprovided by the attendee. As an example, the system displays, via theevent management interface, a pop-up window for configuring filters. Theattendee, who works from 8 am to 5 pm on weekdays, selects a filterdictating that events are only to be scheduled on evenings and weekends.Alternatively, or additionally, the system may obtain attendeeavailability data from a calendar application. As an example, the systemmay execute a request to pull scheduling data via a web serviceassociated with a calendar application. Prior to obtaining informationfrom a calendar application, the system may request, from the attendee,access to the calendar. As an example, the virtual assistant displaysthe text, “May I import your work calendar?”.

In an embodiment, the scheduling engine determines the events, in theinitial order, based on event location. As an example, the schedulingengine includes the classes Math 101A and Science 3 in a class schedule.Math 101A is held on Mondays and Wednesdays at 9 am on the north side ofVictory University's Santa Clara campus. Science 3B is held on Mondaysand Wednesdays at 1 pm on the west side of Victory University's SantaClara campus. The scheduling engine determines whether to select sectionA, B, or C of another class to be scheduled, English 4. The schedulingengine determines the walking path between Math 101A, Science 3B, andeach section of English 4. The scheduling engine selects English 4C forthe schedule, because English 4C is held Mondays and Wednesdays at 11 amalong a convenient walking path between Math 101A and Science 3B. Thescheduling engine may further base event selection on a student'sschedule outside of the institution corresponding to the events. As anexample, a student works in San Francisco on Friday mornings.Accordingly, the system selects a class which is held in San Franciscoon Friday afternoons.

In an embodiment, the scheduling engine determines the events, in theinitial order, based on a template plan. The scheduling engine maylocate a stored template plan corresponding to a particular eventschedule. As an example, the system is configuring a course plan whichincludes the courses required to earn a certificate in early childhoodeducation. The system locates a stored early childhood educationtemplate plan comprising an ordered set of courses which a student couldtake over three semesters. The system presents the events, in theinitial order, corresponding to the early childhood education templateplan.

In an embodiment, the system updates a template plan based on userinput. The system may implement a machine-learning model to update thetemplate plan. The system may keep, or remove, an event based on a scoreassigned to the event. The score may be assigned to the event based onhistorical user selection of the event. As an example, the systempresents a template plan comprising three required courses and asuggested elective course. A student modifies the event schedule toreplace the suggested elective course with a different elective course.The system decrements a score value for the suggested elective course.As students repeatedly reject the suggested elective course, the scorefor the suggested elective course is further decremented. When the scorereaches a threshold value, the system no longer includes the suggestedelected course in the template plan.

In an embodiment, the system presents the event management interfacewith the events in the initial order (Operation 304). The system maydisplay the events with respect to a timeline. As an example, the systemdisplays courses represented by blocks in association with respectivesemesters, as illustrated in FIG. 2A. Alternatively, or additionally,the system may display the events in a plain-text list. Alternatively,or additionally, the system may display the events in a weekly, daily,or monthly calendar (e.g., the weekly calendar illustrated in FIG. 2B).

In an embodiment, the event management interface receives user inputmodifying the initial event order (Operation 306). The event managementinterface may receive user input modifying the initial event order via adrag-and-drop operation. As an example, the user drags a course from theFall 2014 semester to the Spring 2013 semester. As another example, theuser drags a class from Tuesday/Thursday to an alternate class sectionon Monday/Wednesday. Alternatively, the event management interface mayreceive user input modifying the event order via text input. As anexample, the user deletes a weekly meeting from a first time slot. Theuser types the weekly meeting into a second time slot.

Alternatively, the system may receive user confirmation accepting theevents in the initial order. The user may elect not to modify the eventorder. As an example, the virtual assistant displays the text, “I'veprepared a schedule for your classes this semester. Do you have anychanges?”. The virtual assistant displays buttons labeled “Yes” and“No.” The system receives user input selecting “No,” indicatingacceptance of the events in the initial order. If the user accepts theevents in the initial order, then operations 306-314 may be omitted fromthe sequence of operations.

In an embodiment, the system determines whether the user input complieswith ordering rules (Operation 308). The system may compare the newevent order, indicated by the user input, with stored ordering rules. Asan example, a user attempts to move a particular course in a courseschedule. The system determines both: (a) whether another course that isa prerequisite for the particular course is now scheduled prior to theparticular course, and (b) whether the particular course is aprerequisite for a course that is now scheduled subsequent to theparticular course.

As a detailed example, the system displays a proposed study plan for aphysics bachelor's degree program. A user attempts to move a course,Physics 562, to an earlier position in the first semester of the studyplan. However, Physics 562 requires two years of prerequisite courses.Accordingly, the system determines that the modification does not complywith the ordering rules. As another example, the user attempts to movePhysics 562 to a later position in the eighth semester of the studyplan. However, Physics 562 is a prerequisite for Physics 570, scheduledin the seventh semester of the study plan. Accordingly, the systemdetermines that the modification does not comply with the orderingrules. As another example, the user attempts to move Physics 522 to alater position in the fifth semester in the study plan. Theprerequisites for Physics 522 are scheduled prior to the fifth semester.Physics 522 is not a prerequisite for any other courses. Accordingly,the system determines that the modification complies with the orderingrules.

In an embodiment, the system may determine that a modification ispermitted, or not permitted, based on non-course requirements. As anexample, enrollment in a particular class may be contingent uponprofessor approval. If the system identifies a lack of professorapproval for such a class, the system may determine that themodification does not comply with the ordering rules. As anotherexample, course enrollment may be contingent on a student scoring abovea threshold score on an entrance exam. If the system identifies that astudent scored above the threshold score, the system may determine thatthe addition of the course to a course plan complies with the orderingrules.

In an embodiment, the system modifies the event order (Operation 310).The system may modify the event order upon determining that the userinput complies with the ordering rules. The system may modify the orderof events, in the event schedule, as directed by the user.

In an embodiment, the system refrains from modifying the event order.(Operation 312). The system may refrain from modifying the event orderupon determining that the user input does not comply with the orderingrules. The system may retain the initial order.

In an embodiment, the system determines whether additional user input isreceived modifying the event order (Operation 314). As an example, thesystem may detect user input moving a second event to a differentposition in the timeline via a drag-and-drop operation. If the systemreceives additional user input modifying the event order, then thesystem may repeat operations 308-312, as described above.

In an embodiment, the scheduling engine finalizes the event schedule.(Operation 316). The scheduling engine may finalize the event scheduleupon determining that no additional user input has been receivedmodifying the event order. Alternatively, or additionally, thescheduling engine may finalize the event schedule upon receiving aninstruction, from the user, to finalize the event schedule. As anexample, the system detects that the user has clicked a “Complete Plan”button on the event management interface.

The scheduling engine may finalize the event schedule by saving theevent schedule. The scheduling engine may save the event schedule to thedatabase and/or a device associated with the attendee.

In an embodiment, the scheduling engine may enroll the attendee inevents based on the event schedule. As an example, the system generatesan event schedule comprising the attendee's classes for a semester. Thescheduling engine enrolls the attendee in the classes via a universityenrollment system.

In an embodiment, the system monitors an event for availability changes.As an example, the system has generated a class schedule for a studentfor a semester. The system periodically obtains enrollment data for theclasses in the schedule via a university enrollment system. The systemmay, for example, execute a polling operation via an exposed ApplicationProgramming Interface (API) of a university enrollment system. If thesystem determines that an event is no longer available, or an event maysoon become unavailable, the system may execute an appropriate action.Appropriate actions may include notifying the attendee and/or enrollingthe attendee in the event. As an example, the system determines thatthere is only one seat left in a class. Accordingly, the system enrollsthe attendee in the class and transmits a notification to the attendee.As another example, the system determines that a class in an attendee'sschedule has become full. The system may present a message to theattendee asking whether the attendee wants to be placed on a wait list.Alternatively, the system may modify the attendee's schedule to replacethe full class with an available class.

In an embodiment, the system may generate a first event schedule basedon a previously-generated event schedule. As an example, the systemgenerates a course plan which includes courses over 5 semesters. Thecourse plan specifies four courses for the Spring 2018 semester. Basedon the course plan, the system generates a class schedule for the Spring2018 semester, including four classes corresponding to the four coursesin the course plan. As another example, the system may update a courseplan based on classes in a class schedule. A course plan includesEnglish 101 in the Spring 2018 semester. The system determines thatEnglish 101 has been scheduled in the Fall 2017 semester. Accordingly,the system updates the course plan to move English 101 from the Spring2018 semester to the Fall 2017 semester.

A. Course Planning

The following detailed example illustrates operations in accordance withone or more embodiments. The following detailed example should not beconstrued as limiting the scope of any of the claims. The systemidentifies a new student enrolled in a nursing program at VictoryUniversity. The system determines a proposed course plan for thestudent.

The system identifies a template plan. The template plan liststhirty-two courses, arranged as four courses per semester over eightsemesters. Together, the thirty-two courses satisfy the requirements forthe nursing program. The system identifies records corresponding to thestudent's transfer credits. The student has completed six courses thatsatisfy various requirements of the nursing program. Accordingly, thesystem adjusts the course plan to omit courses for which the student hasalready fulfilled the corresponding requirement.

The system presents, to the student via the virtual assistant, themessage, “Hi! Are you ready to make a course plan for your nursingdegree?”. The system displays, below the message, buttons labeled “Yes”and “No.” The system receives user input selecting the “Yes” button. Theevent management interface displays a visual representation of thecourse plan. The course plan may be displayed via a timeline ofsemesters as illustrated in FIG. 2A.

The system receives user input adjusting the position of a course in theplan. The student drags and drops the course Adult Nursing Care III fromFall 2019 to Spring 2018. The system analyzes the user input in light ofstored ordering rules. The ordering rules dictate that Adult NursingCare III must be taken subsequent to Adult Nursing Care II. The systemdetermines that the user input would result in Adult Nursing Care II andAdult Nursing Care III being taken concurrently. Accordingly, the systemdetermines that the user input does not comply with the ordering rules.The system refrains from modifying the event order. The system displays,via the virtual assistant, the message, “Sorry, you cannot take AdultNursing Care III until you have passed Adult Nursing Care II.” AdultNursing Care III remains in the Fall 2019 position.

The system receives additional user input. The student drags and dropsAdult Nursing Care III from Fall 2019 to Spring 2019. The systemdetermines that the second user modification would result in AdultNursing Care III being scheduled subsequent to Adult Nursing Care II.Accordingly, the system determines that the user input complies with theordering rules. The system modifies the event order according to theuser input.

The system displays, via the virtual assistant, the message, “OK, I madethe changes. Do you want to make any other changes?” The systemdisplays, below the message, buttons labeled “Yes” and “No.” The systemreceives user input selecting “No.” The system finalizes the schedule bystoring the study plan to the database.

B. Class Scheduling

The following detailed example illustrates operations in accordance withone or more embodiments. The following detailed example should not beconstrued as limiting the scope of any of the claims. The systemdetermines that a student at Victory University has not enrolled in anycourses for the upcoming Fall 2017 semester. Accordingly, the systemdetermines a proposed class schedule for the student for the upcomingsemester.

The system identifies a previously generated course plan for the student(e.g., the course plan shown in FIG. 2A). The system identifies fourcourses that are in the student's course plan for the Fall 2017semester. The system further identifies records corresponding to classesthe student has completed at Victory University. The system furtheridentifies records corresponding to the student's transfer credits.Based on the courses in the course plan, and the student's completedclasses, the system generates an initial class schedule.

The system presents, to the student via the virtual assistant, themessage, “Hi! Are you ready to make a class schedule for nextsemester?”. The system displays, below the message, buttons labeled“Yes” and “No.” The system receives user input selecting the “Yes”button. The class management interface displays a visual representationof the class schedule. The class schedule may be displayed via a weeklycalendar as illustrated in FIG. 2B.

The system displays a modal comprising the message, “Would you like meto import your work calendar?”. The system displays, below the message,buttons labeled “Yes” and “No.” The system receives user input selectingthe “Yes” button. The system imports data from a third-party calendarapplication. The data specifies that the student works Tuesdays andThursdays from 7 am to 1 pm. Accordingly, the system adjusts theschedule so that the student does not have classes between 7 am and 1 pmon Tuesdays and Thursdays. Further, the system determines that thestudent has a 20-minute commute from work to school. Accordingly, thesystem schedules the classes on Tuesdays and Thursdays to allow forcommute time.

The system presents the updated proposed schedule to the student. Thesystem presents a modal with the message, “Here is the schedule I haveprepared. Would you like to make any changes?”.

The system receives user input adjusting the position of a class in theschedule. The student drags and drops the course Math 101 from 9 amMonday to 2 pm Monday. The system analyzes the user input in light ofclass availability. The system determines that Math 101 is not availableat 2 pm on Mondays, but Math 101 is available at 2 pm on Fridays. Thesystem further determines that the student is available at 2 pm onFridays. The system displays, via the virtual assistant, the message,“Math 101 is available at 2 pm on Fridays or 9 am on Mondays. Whatshould we do?”. The system further displays buttons labeled “Keep it,and “Move it.” Responsive to detecting user selection of the “Move it”button, the system reschedules Math 101 to 2 pm on Fridays.

The system receives additional user input. The student selects a buttonlabeled “Filter Classes.” The system displays a modal displaying a listof campuses, professors, and course formats. The student deselects twoprofessors. Responsive to identifying the deselected professors, thesystem changes the section of English 4 in the student's schedule, sothat the student is not scheduled in any classes from any deselectedprofessors.

The system displays, via the virtual assistant, the message, “OK, I madethe changes. Do you want to make any other changes?” The systemdisplays, below the message, buttons labeled “Yes” and “No.” The systemreceives user input selecting “No.” The system finalizes the schedule bystoring the class schedule to the database.

5. Selecting Events for Recommendation

FIG. 4 illustrates an example set of operations for selecting events forrecommendation in accordance with one or more embodiments. One or moreoperations illustrated in FIG. 4 may be modified, rearranged, or omittedaltogether. Accordingly, the particular sequence of operationsillustrated in FIG. 4 should not be construed as limiting the scope ofone or more embodiments.

In an embodiment, the event recommendation engine determinescharacteristics of a candidate attendee (Operation 402). The eventrecommendation engine may retrieve stored characteristics of thecandidate attendee. Alternatively, or additionally, the eventrecommendation engine may determine characteristics of the candidateattendee via user input. As an example, the virtual assistant presentsthe message, “Do you work nights?”. The system receives user inputspecifying that the candidate attendee works nights. The system stores“Works Nights” as a characteristic of candidate attendee.

In an embodiment, the event recommendation engine identifies recordsidentifying a set of prior attendees that have attended an occurrence ofa reoccurring event (Operation 404). The event recommendation engine mayselect a particular reoccurring event for analysis. As an example, theevent recommendation engine may select a particular course from a subsetof available courses. The subset of available courses may be selectedbased on factors such as prerequisite requirements and courses completedby the candidate attendee. The event recommendation engine may select aparticular reoccurring event based on an event schedule and/or major. Asan example, the recommendation engine identifies a potential electiveclass for recommending to Jane Doe in Fall 2020, based on a course planstored for Jane Doe's English degree program.

Alternatively, or additionally, the event recommendation engine mayselect a reoccurring event based on another event that the candidateattendee attended. As an example, the candidate attendee completed acourse, English 4. The event recommendation selects a course, Literature109, because other students that completed English 4 also completedLiterature 109. The course, Literature 109, may be selected basedfurther on determining that the candidate attendee's major is related toLiterature 109.

Alternatively, or additionally, the event recommendation engine mayselect a reoccurring event based on an interest profile corresponding tothe candidate attendee. The interest profile may, for example, includeinterests of the candidate attendee obtained from web browsing dataand/or surveys associated with the candidate attendee.

Alternatively, or additionally, the event recommendation engine mayselect a reoccurring event based on popularity of the event. The eventrecommendation engine may establish a threshold number or thresholdpercentage of event attendees to attend the reoccurring event in a priortime period. If the number of event attendees that attended thereoccurring event meets the threshold, the event recommendation enginemay select the reoccurring event.

In an embodiment, the event recommendation engine identifies recordscorresponding to the prior attendees in association with the event. Theevent recommendation engine may analyze the records to identifycharacteristics of the prior attendees. The event recommendation enginemay identify characteristics of prior attendees that had a positiveexperience with a prior occurrence of the event. As an example, theevent recommendation engine identifies characteristics of priorattendees who have enrolled in and/or passed Chemistry 101.Alternatively, or additionally, the event recommendation engine mayidentify characteristics of prior attendees that had a negativeexperience with a prior occurrence of the event. As an example, theevent recommendation engine identifies characteristics of priorattendees who have failed Chemistry 101. As another example, the eventrecommendation engine identifies characteristics of prior attendees thatdid not enjoy an opera performance.

In an embodiment, the event recommendation engine computes an eventscore for the reoccurring event (Operation 406). The eventrecommendation engine may compute the event score based on a comparisonof (a) characteristics of the candidate attendee and (b) characteristicsof the set of prior attendees. To determine the event score, the systemmay identify characteristics which are shared between the candidateattendee and the prior attendees. Alternatively, or additionally, thesystem may identify characteristics which differ between the candidateattendee and the prior attendees. The system may compare thecharacteristics using a subset of prior attendees. As an example, thesystem may identify characteristics which are shared between thecandidate attendee and prior attendees that have reported enjoying thereoccurring event.

The system may compute the event score by incrementing and/ordecrementing a value, based on the comparison. As an example, the systemmay increment an event score, for a candidate attendee, for eachcharacteristic that the candidate attendee shares with prior attendeesthat had a positive experience with a prior occurrence of an event. Thesystem may decrement the event score for characteristics that thecandidate attendee shares with prior attendees that had a negativeexperience with a prior occurrence of an event. The system may modifythe event score based on a comparison of particular attendeecharacteristics in association with the event. As an example, the systemmay increment or decrement the event score based on whether thecandidate attendee shares characteristics with prior attendees who havereceived an A grade in a course. The characteristics compared mayinclude academic characteristics such as grades, as well as non-academiccharacteristics such as demographic information. The characteristicscompared may include student experiences. As an example, if thecandidate attendee and the set of prior attendees both participated in aforeign exchange program in Japan, the system may increase the eventscore for a class completed by the set of prior attendees.

In an embodiment, the event score is based on a success rate of each ofthe set of prior attendees. Success may be measured according to one ormore metrics. As examples, succeeding may be defined as graduating froman educational institution, obtaining employment after graduating, orgraduating within a threshold time period (e.g., four years). Based onthe success rate of the prior attendees, the event score may beincreased. As an example, 70% of prior students that took a particularclass historically graduated early. Accordingly, the system increasesevent score for the particular class.

In an embodiment, the event recommendation engine refines the eventscore based on characteristics of the candidate attendee. As an example,the system may increment or decrement the event score based on thecandidate attendee's interests. The system may increment an event scoreif the candidate attendee has indicated an interest in the subjectmatter of the event on social media or by web browsing history. Thesystem may increment an event score if the candidate attendee hasindicated an interest in the subject matter of the event by attendingsimilar events at a current or prior educational institution.

In an embodiment, the event score is based on institutional preferences.As an example, the system is selecting a class to recommend for afreshman student. The student is scheduling classes for the student'sfirst semester at a college. The college requires freshmen to take bothmath and English in the first year of attendance. The college hasspecified a preference to enroll half of incoming freshmen in math inthe first semester of attendance. The college has specified a preferenceto enroll half of incoming freshmen in English in the first semester ofattendance. The preferences are established to evenly distribute thefreshmen between math and English. The system determines that morefreshmen are currently enrolled in math than in English. Accordingly,the system increments the event score for the student for English. Thesystem decrements the event score for the student for math. As anotherexample, the system may increment or decrement the event score based ona target number of students for a class. The target number of studentsfor the class may correspond to distributing students evenly, asdescribed above. Alternatively, or additionally, the target number ofstudents for the class may correspond to available seats in a class.

In an embodiment, the event recommendation engine determines whether theevent score meets a threshold value (Operation 408). The eventrecommendation engine may retrieve a stored threshold value. The eventrecommendation engine may compare the event score to the thresholdvalue, to determine whether the event score meets the threshold vale.

In an embodiment, the system recommends the reoccurring event for thecandidate attendee (Operation 410). The system may recommend thereoccurring event if the event score meets the threshold value.

The system may recommend the reoccurring event by presenting the eventdirectly to the candidate attendee. The system may recommend an eventwith or without the event management interface. The system may recommendan event by including the event in an event schedule presented via theevent management interface. The system may recommend a particular timeperiod for the candidate attendee to attend the event based on priorevents attended by the candidate attendee. As an example, the system mayonly recommend a course in an upcoming semester after determining that apre-requisite for that course has been completed. The system mayrecommend a particular time period for the candidate attendee to attendthe event based an event schedule for the candidate attendee. As anexample, during December 2017, the system may recommend a course for thefall semester in 2018 based on a pre-requisite for the course beingscheduled for the candidate attendee during the spring semester in 2018.The system may request user input accepting or rejecting therecommendation. Alternatively, or additionally, the system may presentthe recommendation on a stand-alone basis, via the event managementinterface. Alternatively, or additionally, the system may present therecommendation via email or text message. As an example, the systemrecommends two continuing education courses, for a candidate attendee,via email. As another example, the system recommends a medicalconvention for a candidate attendee via text message. Alternatively, oradditionally, the system may present the recommendation via the virtualassistant.

In an embodiment, the system may recommend the reoccurring event for thecandidate attendee by presenting the event to an administrator, such asa school counselor or a travel agent. As an example, the system maypresent a course recommendation to a guidance counselor via email. Theguidance counselor can assess the recommendation and approve or rejectthe recommendation. An approved recommendation may be presented to thestudent via the event management interface. Alternatively, oradditionally, the guidance counselor may recommend the course to thestudent in-person or via email.

In an embodiment, the system refrains from recommending the reoccurringevent for the candidate attendee (Operation 412). The system may refrainfrom recommending the event if the event score is less than thethreshold value.

A. Recommending a Course

The following detailed example illustrates operations in accordance withone or more embodiments. The following detailed example should not beconstrued as limiting the scope of any of the claims. The system selectsa course to recommend for inclusion in a course plan for a student,Chris Sanchez.

The system determines characteristics of Chris. The system determinesthat Chris is a transfer student. The system determines that Chris is 20years old, male, Caucasian, and from Arizona. The system determines thatChris earned a 3.6 GPA at the college from which Chris is transferring.The system determines that Chris earned a 3.3 GPA in high school. Thesystem determines that Chris participates in hockey and water polo. Thesystem determines that Chris is a political science major. The systemdetermines that Chris spends an average of two hours a day browsing theinternet.

The system identifies a potential course to include in the course plan.Much of the course plan is determined based on a template plan for apolitical science transfer student. There are several openings forelective courses that are flexible in the template plan. The systemanalyzes one potential elective course, Introduction to Pottery.

The system identifies event records for students that have previouslyenrolled in Introduction to Pottery. The system identifiescharacteristics for each of the students that has enrolled inIntroduction to Pottery. The characteristics include demographiccharacteristics, as listed above for Chris Sanchez. Additionally, thecharacteristics identified for prior students include whether thestudents passed, failed, or dropped Introduction to Pottery. Thecharacteristics identified for prior students further includes a gradereceived by the students in Introduction to Pottery. The characteristicsidentified for prior students further include an overall GPA for thestudents in the semester in which the students took Introduction toPottery.

The system compares the characteristics of Chris Sanchez to thecharacteristics of the set of prior attendees that have previouslyattended Introduction to Pottery. The system uses a machine-learningmodel to compute the event score based on interrelated attendeecharacteristics.

The system divides prior attendees of Introduction to Pottery into twogroups: those who received a grade of C or better in the course, andthose who did not receive a grade of C or better. Characteristics ofChris are compared to the characteristics of the students that receiveda grade of C or better. For each characteristic that Chris shares with aparticular student that received a C, Chris's event score is incrementedby 0.01. for each characteristic that Chris shares with a particularstudent that received a B, Chris's event score is incremented by 0.03.for each characteristic Chris shares with a particular student thatreceived an A, Chris's event score is incremented by 0.08. Based on thecomparison, the system assigns Introduction to Pottery an event score of8 for Chris Sanchez.

The system refines the event score based on Chris's interests. Thesystem determines that Chris follows pottery-related pages on socialmedia. The system determines that Chris has frequently enrolled in artclasses in the past. Accordingly, the system increments Chris's eventscore from 8 to 9.

The system compares the event score of 9 to a threshold value forrecommendation. The threshold value for recommendation is 7.Accordingly, the system determines that the event score meets thethreshold value.

Based on the event score meeting the threshold value, the systemrecommends Introduction to Pottery for Chris. The system recommends thecourse by including the course in a course schedule presented to ChrisSanchez via the course management interface.

B. Recommending a Class

The following detailed example illustrates operations in accordance withone or more embodiments. The following detailed example should not beconstrued as limiting the scope of any of the claims. The system selectsa class to potentially recommend for Chris Sanchez for the Fall 2019semester. Chris is a sophomore at Victory University studying politicalscience.

A class may be recommended using the same considerations described abovewith respect to recommending a course in Section 5A (given that a classis a specific instance of a course). Additionally, the system may factorin class-specific elements such as location, time slots, and professors,when selecting a class for recommendation.

The system identifies characteristics for Chris, as described above withrespect to Section 5A. The system further identifies availability andpreferences for Chris. Chris has specified, via the class managementinterface, that he does not want to take any classes before 10 am. Chrishas also specified that he prefers to take classes taught by aprofessor, rather than by a teaching assistant.

The system uses a machine-learning model to compare characteristic forChris to characteristics for students that have previously takenIntroduction to Pottery, as described above with respect to Section 5A.The system computes an event score. Overall, Introduction to Potteryreceives an event score of 9. In addition to comparison of Chris'scharacteristics and characteristics of students that have previouslyenrolled in Introduction to Pottery, the system accounts for Chris'savailability and preferences. The system analyzes two sections ofIntroduction to Pottery. Section A is offered at 11 am and is taught bya professor. Section B is offered at 9 am and is taught by a professor.Section C is offered at 2 pm and is taught by a teaching assistant.Based on Chris's preference for scheduling classes after 9 am, the eventscore for Section B is decremented by 4 points to 5. Based on Chris'spreference for classes taught by a professor, the event score forSection C is decremented by 3 points to 6. Accordingly, Section A hasthe highest event score of 9.

The system compares the respective event score for each section to athreshold value of 7. The system determines that the event score forSection A meets the threshold value, while the event scores for SectionsB and C do not meet the threshold value. Accordingly, the systemrecommends Introduction to Pottery Section A to Chris. The systemrefrains from recommending Introduction to Pottery Sections B and C toChris. The system recommends introduction to Pottery Section A byincluding the class in a class schedule. The class schedule is presentedto Chris via the class management interface.

6. Miscellaneous; Extensions

Embodiments are directed to a system with one or more devices thatinclude a hardware processor and that are configured to perform any ofthe operations described herein and/or recited in any of the claimsbelow.

In an embodiment, a non-transitory computer readable storage mediumcomprises instructions which, when executed by one or more hardwareprocessors, causes performance of any of the operations described hereinand/or recited in any of the claims.

Any combination of the features and functionalities described herein maybe used in accordance with one or more embodiments. In the foregoingspecification, embodiments have been described with reference tonumerous specific details that may vary from implementation toimplementation. The specification and drawings are, accordingly, to beregarded in an illustrative rather than a restrictive sense. The soleand exclusive indicator of the scope of the invention, and what isintended by the applicants to be the scope of the invention, is theliteral and equivalent scope of the set of claims that issue from thisapplication, in the specific form in which such claims issue, includingany subsequent correction.

7. Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs), fieldprogrammable gate arrays (FPGAs), or network processing units (NPUs)that are persistently programmed to perform the techniques, or mayinclude one or more general purpose hardware processors programmed toperform the techniques pursuant to program instructions in firmware,memory, other storage, or a combination. Such special-purpose computingdevices may also combine custom hard-wired logic, ASICs, FPGAs, or NPUswith custom programming to accomplish the techniques. Thespecial-purpose computing devices may be desktop computer systems,portable computer systems, handheld devices, networking devices or anyother device that incorporates hard-wired and/or program logic toimplement the techniques.

For example, FIG. 5 is a block diagram that illustrates a computersystem 500 upon which an embodiment of the invention may be implemented.Computer system 500 includes a bus 502 or other communication mechanismfor communicating information, and a hardware processor 504 coupled withbus 502 for processing information. Hardware processor 504 may be, forexample, a general-purpose microprocessor.

Computer system 500 also includes a main memory 506, such as arandom-access memory (RAM) or other dynamic storage device, coupled tobus 502 for storing information and instructions to be executed byprocessor 504. Main memory 506 also may be used for storing temporaryvariables or other intermediate information during execution ofinstructions to be executed by processor 504. Such instructions, whenstored in non-transitory storage media accessible to processor 504,render computer system 500 into a special-purpose machine that iscustomized to perform the operations specified in the instructions.

Computer system 500 further includes a read only memory (ROM) 508 orother static storage device coupled to bus 502 for storing staticinformation and instructions for processor 504. A storage device 510,such as a magnetic disk or optical disk, is provided and coupled to bus502 for storing information and instructions.

Computer system 500 may be coupled via bus 502 to a display 512, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 514, including alphanumeric and other keys, is coupledto bus 502 for communicating information and command selections toprocessor 504. Another type of user input device is cursor control 516,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 504 and forcontrolling cursor movement on display 512. This input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

Computer system 500 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 500 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 500 in response to processor 504 executing one or more sequencesof one or more instructions contained in main memory 506. Suchinstructions may be read into main memory 506 from another storagemedium, such as storage device 510. Execution of the sequences ofinstructions contained in main memory 506 causes processor 504 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperate in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 510.Volatile media includes dynamic memory, such as main memory 506. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge,content-addressable memory (CAM), and ternary content-addressable memory(TCAM).

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 502. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 504 for execution. For example,the instructions may initially be carried on a magnetic disk orsolid-state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 500 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 502. Bus 502 carries the data tomain memory 506, from which processor 504 retrieves and executes theinstructions. The instructions received by main memory 506 mayoptionally be stored on storage device 510 either before or afterexecution by processor 504.

Computer system 500 also includes a communication interface 518 coupledto bus 502. Communication interface 518 provides a two-way datacommunication coupling to a network link 520 that is connected to alocal network 522. For example, communication interface 518 may be anintegrated-services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 518 may be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links may also beimplemented. In any such implementation, communication interface 518sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.

Network link 520 typically provides data communication through one ormore networks to other data devices. For example, network link 520 mayprovide a connection through local network 522 to a host computer 524 orto data equipment operated by an Internet Service Provider (ISP) 526.ISP 526 in turn provides data communication services through theworld-wide packet data communication network now commonly referred to asthe “Internet” 528. Local network 522 and Internet 528 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 520 and through communication interface 518, which carrythe digital data to and from computer system 500, are example forms oftransmission media.

Computer system 500 can send messages and receive data, includingprogram code, through the network(s), network link 520 and communicationinterface 518. In the Internet example, a server 350 might transmit arequested code for an application program through Internet 528, ISP 526,local network 522 and communication interface 518.

The received code may be executed by processor 504 as it is received,and/or stored in storage device 510, or other non-volatile storage forlater execution.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

What is claimed is:
 1. One or more non-transitory computer-readablemedia storing instructions, which when executed by one or more hardwareprocessors, cause performance of operations comprising: generating aschedule for a candidate attendee that includes a reoccurring event, thegenerating comprising: identifying a plurality of scheduling constraintsassociated with the candidate attendee, the scheduling constraintsincluding at least one scheduled time constraint during which thecandidate attendee has a previously scheduled event; identifying aplurality of event constraints associated with the reoccurring event,the plurality of event constraints including an availability scheduleidentifying a first set of times for the reoccurring event and a secondset of times for the reoccurring event; accessing a scheduling template;and applying to the scheduling template (1) the scheduling constraintsassociated with the candidate attendee and (2) the plurality of eventconstraints to generate the schedule for the candidate attendee, theschedule comprising the reoccurring event at the first set of times. 2.The media of claim 1, further comprising a set of ordering rulesassociated with the reoccurring event, the set of ordering rulesspecifying a sequence in which the reoccurring event must be attendedrelative to one or both of (1) a pre-requisite to the reoccurring eventor (2) an event that is attended concurrently with the reoccurringevent.
 3. The media of claim 2, further comprising accessing a candidateattendee attendance history listing a set of previously attended eventsand using the attendance history to determine whether the candidateattendee is eligible to attend a particular reoccurring event based onthe set of ordering rules associated with the reoccurring event.
 4. Themedia of claim 1, wherein the plurality of scheduling constraintsassociated with the candidate attendee are identified by accessing acalendar associated with the candidate attendee, wherein the calendaridentifies at least one scheduled time constraint.
 5. The media of claim1, wherein: the plurality of scheduling constraints associated with thecandidate attendee further comprise a total number of hours or a totalnumber of events during a measurement period to which the candidateattendee is already committed; and responsive to determining that thetotal number of hours or the total number of events to which thecandidate attendee is already committed during the measurement period isabove a corresponding threshold value, prohibiting additionalreoccurring events from being scheduled.
 6. The media of claim 1,wherein the plurality of scheduling constraints associated with thecandidate attendee are identified based on a pattern of historical userscheduling behavior.
 7. The media of claim 6, wherein the pattern ofhistorical user scheduling behavior comprises one or both of cancelationrequests and rescheduling requests for reoccurring events during one orboth of a time of day or a day of week.
 8. The media of claim 1, whereinthe scheduling template identifies a set of reoccurring events that thecandidate attendee is required to attend.
 9. The media of claim 8,wherein the set of reoccurring events that the candidate attendee isrequired to attend are determined based on requirements for completing acertification.
 10. The media of claim 1, wherein: the plurality ofscheduling constraints associated with the candidate attendee furthercomprise at least one filter criteria for ranking time periods duringwhich reoccurring events may be scheduled according one or morecorresponding user preferences; the user is available at the first setof times and the second set of times; and scheduling the reoccurringevent at the first set of times is based on a particular filter criteriaassociated with user preferences of the candidate attendee.
 11. Themedia of claim 1, wherein the candidate attendee is available to attendthe reoccurring event at both the first set of times and the second setof times, and wherein the first set of times is selected based on apattern of historical user scheduling.
 12. The media of claim 1, furthercomprising refraining from selecting the second set of times for thereoccurring event in response to determining that the second set oftimes for the reoccurring event conflicts with the previously scheduledevent.
 13. A method comprising: generating a schedule for a candidateattendee that includes a reoccurring event, the generating comprising:identifying a plurality of scheduling constraints associated with thecandidate attendee, the scheduling constraints including at least onescheduled time constraint during which the candidate attendee has apreviously scheduled event; identifying a plurality of event constraintsassociated with the reoccurring event, the plurality of eventconstraints including an availability schedule identifying a first setof times for the reoccurring event and a second set of times for thereoccurring event; accessing a scheduling template; and applying to thescheduling template (1) the scheduling constraints associated with thecandidate attendee and (2) the plurality of event constraints togenerate the schedule for the candidate attendee, the schedulecomprising the reoccurring event at the first set of times.
 14. Themethod of claim 13, further comprising a set of ordering rulesassociated with the reoccurring event, the set of ordering rulesspecifying a sequence in which the reoccurring event must be attendedrelative to one or both of (1) a pre-requisite to the reoccurring eventor (2) an event that is attended concurrently with the reoccurringevent.
 15. The method of claim 14, further comprising accessing acandidate attendee attendance history listing a set of previouslyattended events and using the attendance history to determine whetherthe candidate attendee is eligible to attend a particular reoccurringevent based on the set of ordering rules associated with the reoccurringevent.
 16. The method of claim 13, wherein the plurality of schedulingconstraints associated with the candidate attendee are identified byaccessing a calendar associated with the candidate attendee, wherein thecalendar identifies at least one scheduled time constraint.
 17. Themethod of claim 13, wherein: the plurality of scheduling constraintsassociated with the candidate attendee further comprise a total numberof hours or a total number of events during a measurement period towhich the candidate attendee is already committed; and responsive todetermining that the total number of hours or the total number of eventsto which the candidate attendee is already committed during themeasurement period is above a corresponding threshold value, prohibitingadditional reoccurring events from being scheduled.
 18. The method ofclaim 13, wherein the plurality of scheduling constraints associatedwith the candidate attendee are identified based on a pattern ofhistorical user scheduling behavior.
 19. The method of claim 18, whereinthe pattern of historical user scheduling behavior comprises one or bothof cancelation requests and rescheduling requests for reoccurring eventsduring one or both of a time of day or a day of week.
 20. The method ofclaim 13, wherein the scheduling template identifies a set ofreoccurring events that the candidate attendee is required to attend.